<?php

class AjaxController extends Controller {

    public function actions() {
        return array(
            'captcha' => array(
                'class' => 'CCaptchaAction',
                'backColor' => 0xFFFFFF,
                'testLimit' => 5,
            ),
        );
    }

    public function actionGetModels() {
        if (Yii::app()->request->isAjaxRequest) {            
            $id = isset($_POST['brand']) ? (int) $_POST['brand'] : 0;
            $bTitle = isset($_POST['bTitle']) ? $_POST['bTitle'] : '';
            $offset = isset($_POST['offset']) ? (int) $_POST['offset'] : 0;            
            $queery = 'SELECT "pageId", "pageTitle", "pageUrl", "pageYandexId", "pageImages" FROM mb_pages WHERE "pageParent" = ' . $id . ' and "pageType" = \'model\' and "pageActive" = 1 order by "pageSort", "pageTitle" LIMIT 20 offset ' . $offset;
            $models = Yii::app()->db->createCommand($queery)->queryAll();            
            $status = count($models) < 20 ? 'end' : 'yes';
            $html = '';
            foreach ($models as $model) {
                $src = $this->getImageUrl('/image/resize/200x200/uploads/images/model/' . $model['pageImages']);
                $html .= '<li data-id="' . $model['pageId'] . '" style="width: 20%;">                
                            <div class="model-list__item">
                                <div class="model-list__photo">
                                    <a href="/' . $model['pageUrl'] . '"><img src="' . $src . '" alt="Ремонт ' . $bTitle . ' ' . $model['pageTitle'] . '"></a>
                                    <!--<span class="itemOverlay">
                                        <a href="#">Yandex Market</a>
                                    </span>-->
                                </div>
                                <span>
                                    <a href="/' . $model['pageUrl'] . '">' . $bTitle . ' ' . $model['pageTitle'] . '</a>						
                                </span>
                            </div>    
                        </li>';
            }

            echo json_encode(array('status' => $status, 'content' => $html));
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    public function actionGetFastBuyData($type) {
        if (Yii::app()->request->isAjaxRequest) {
            $id = !empty($_POST['id']) ? (int) $_POST['id'] : 0;
            $criteria = new CDbCriteria();
            switch ($type) {
                case 'brand':
                    $criteria->select = '"pageId", "pageTitle"';
                    $criteria->addCondition('"pageParent" = \'' . $id . '\' and "pageType" = \'brand\' and "pageActive" = 1 order by "pageTitle"');
                    $models = Page::model()->findAll($criteria);
                    echo CHtml::tag
                            ('option', array('value' => 0), CHtml::encode('Призводитель'), true);
                    foreach ($models as $value => $subcategory) {
                        echo CHtml::tag
                                ('option', array('value' => $subcategory['pageId']), CHtml::encode($subcategory['pageTitle']), true);
                    }
                    break;
                case 'model':
                    $criteria->select = '"pageId", "pageTitle"';
                    $criteria->addCondition('"pageParent" = \'' . $id . '\' and "pageType" = \'model\' and "pageActive" = 1 order by "pageTitle"');
                    $models = Page::model()->findAll($criteria);
                    echo CHtml::tag
                            ('option', array('value' => 0), CHtml::encode('Модель'), true);
                    foreach ($models as $value => $subcategory) {
                        echo CHtml::tag
                                ('option', array('value' => $subcategory['pageId']), CHtml::encode($subcategory['pageTitle']), true);
                    }
                    break;
                case 'service':
                    $regionId = Yii::app()->session['userRegion']['id'];
                    $criteria->select = '"serviceId", "serviceTitle"';
                    $criteria->addCondition('"modelId" = \'' . $id . '\' and "regionId" = \'' . $regionId . '\' and "active" = 1 order by "serviceTitle"');
                    $models = Model2servAll::model()->findAll($criteria);
//                    print_r($models);exit;
                    echo CHtml::tag
                            ('option', array('value' => 0), CHtml::encode('Тип ремонта'), true);
                    foreach ($models as $value => $subcategory) {
                        echo CHtml::tag
                                ('option', array('value' => $subcategory['serviceId']), CHtml::encode($subcategory['serviceTitle']), true);
                    }
                    break;
                case 'finish':
                    $modelId = $_POST['model'];
                    $regionId = Yii::app()->session['userRegion']['id'];
                    $criteria->select = '"price", "serviceId", "serviceId"';
                    $criteria->addCondition('"serviceId" = ' . $id . ' and "modelId" = ' . $modelId . ' and "regionId" = ' . $regionId);
                    $tblName = !Yii::app()->user->isGuest ? 'Model2servAll' : 'Model2servAll_new';
                    $model = $tblName::model()->find($criteria);
                    $page = Page::model()->findByPk($modelId);

                    $file = Yii::app()->basePath . '/../uploads/currency.txt';
                    $exchange = file_exists($file) ? file_get_contents($file) : 0;
                    $exids = array(31, 33, 34);
                    if ($regionId != 1)
                        $exids = array_merge($exids, array(32));
                    $aEx = 67;
                    $eprice = ($model['price'] / $aEx * $exchange);
                    $eprice = (int) ($eprice / 100) * 100 + 90;
                    $dprice = ($page['pageGroup'] == 'course' && in_array($value['serviceId'], $exids) ? $eprice : Controller::numberFormat($model['price']));
                    echo '<span style="margin-bottom: -26px;display: block;font-weight: bold;">Цена: ' . (empty($model['price']) || $model['price'] === 0 ? 'Звоните' : $dprice . ' руб.') . ' </span>
                                            <span style="float: right;" class="global-button green-bg price-button">
                                                <a href="#" id="service-go" data-href="' . $page['pageUrl'] . '#' . $model['serviceId'] . '">Перейти</a>
                                            </span>';
                    break;
            }
            Yii::app()->end();
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    public function actionModelsSort() {
        foreach ($_POST['models'] as $model) {
            $m = Page::model()->findByPk($model['id']);
            $m->pageSort = $model['sort'];
            $m->save(false);
        }
        echo 'success';
    }

    public function actionCheckStatus() {
        if (Yii::app()->request->isAjaxRequest && isset($_POST['number'])) {
            $url = "http://erp.mobi03.ru/6878/requestStatus.ashx?requestNumber=" . $_POST['number'] . '&newResp=1';
            $result = json_decode(file_get_contents($url), true);
            if ($result['response'] == 'success') {
                $ret['sum'] = isset($result['data']['ssm']) && !empty($result['data']['ssm']) ? $result['data']['ssm'] : $result['data']['total'];
                $ret['title'] = 'Оплата по заказу №: ' . $_POST['number'] . "; СЦ: " . $result['data']['current_sc'];
                echo json_encode($ret);
            } else {
                echo 'error';
            }
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    public function actionCall() {
        if (isset($_POST['CallForm'])) {
            $msg = isset($_POST['choice']) ? $_POST['choice'] : 'off';
            //var_dump($msg);exit;
            $to = $msg == 'status' ? 'OBRATNIY_ZVONOK' : 'SITE_ALL';
            $msg2 = $msg == 'status' ? 'Я хочу узнать статус ремонта' : 'Я новый клиент';
            if (!isset($_POST['choice'])) {
                $msg2 = 'Хочу обратный звонок - попап';
            }
            $call_type = isset($_POST['choice']) && $_POST['choice'] == 0 ? 'status' : 'new';
            $data = array(
                "fio" => isset($_POST['CallForm']['userName']) ? $_POST['CallForm']['userName'] : '', //фамилия имя
                "telefon" => preg_replace("/\D/", "", $_POST['CallForm']['userPhone']), //телефон
                'msg' => $msg2, // oписание
                "gorod" => Yii::app()->session['userRegion']['city'] == "Москва и МО" ? "Москва" : Yii::app()->session['userRegion']['city'], //город
                "tip_tehniki" => isset($_GET['tip']) ? $_GET['tip'] : '',
                "brend" => isset($_GET['brand']) ? $_GET['brand'] : '', //бренд **
                "model" => isset($_GET['model']) ? $_GET['model'] : '', //модель **
                "call_type" => $call_type,
                "zakaz_kurera" => '', //заказ курьера
                "adres" => '', //адрес
                "data_sozdaniya" => time(), //дата создания
                "title_page" => urldecode($_GET['pageTitle']), //заголовок страницы с которой пришла заявка
                "link_page" => Yii::app()->request->hostInfo . '/' . urldecode($_GET['pageUrl']) //ссылка страницы с которой пришла заявка 
            );
            $result = $this->sendClaris($to, $data);
            //echo $result;exit; 
            Yii::app()->session['userAttributes'] = $_POST['CallForm'];
            mTools::sendToClarisHistory($data, 'Обратный звонок');
//            if (stripos($result, 'success:true') !== FALSE) {
            $m = array('response' => 'success', 'message' => array('title' => 'Поздравляем', 'desc' => 'Ваша заявка на обратный звонок успешно принята'));
//            } else {
//                $m = array('response' => 'success', 'message' => array('title' => 'Уведомление', 'desc' => 'К сожалению, не удалось отправить Вашу заявку на сервер, попробуйте пожалуйста еще раз.'));
//            }
            echo json_encode($m);
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    public function actionCallme() {
        $status = urldecode($_POST['oldStatus']);
        $message = 'Клиент изменил статус:  ';
        if ($status == "Перезвонить 1") {
            $status = "Перезвонить 2";
            $message .= 'Перезвоните мне 2';
        } else if ($status == "Перезвонить 2" || $status == "Перезвонить 3") {
            $status = "Перезвонить 3";
            $message .= 'Перезвоните мне 3';
        } else {
            $status = "Перезвонить 1";
            $message .= 'Перезвоните мне 1';
        }
        $url = 'http://erp.mobi03.ru/6878/requestStatus.ashx?requestNumber=' . $_POST['orderNo'] . '&action=updatePerezvonit&value=' . urlencode($status);
        $result = json_decode(file_get_contents($url), true);
        if (isset($result['response']) && $result['response'] == 'success') {
            echo json_encode(array('title' => 'Уведомление', 'desc' => 'Ваша заявка на обратный звонок успешно получена.'));
            $url = 'http://erp.mobi03.ru/6878/requestWorks.ashx?requestNumber=' . $_POST['orderNo'] . '&lsSystem=1&description=' . urlencode($message) . '&action=add';
            $result = file_get_contents($url);
        } else {
            echo json_encode(array('title' => 'Уведомление', 'desc' => 'Ваша заявка на обратный звонок успешно получена.'));
        }
    }

    public function actionStatus() {
        if (Yii::app()->request->isAjaxRequest && isset($_POST['StatusForm']['message'])) {
            $result = json_decode(file_get_contents('http://erp.mobi03.ru/6878/requestWorks.ashx?requestNumber=' . $_POST['StatusForm']['name'] . '&description=' . urlencode($_POST['StatusForm']['message']) . '&action=add'), true);
            if (isset($result['response']) && $result['response'] == 'success')
                echo json_encode(array('title' => 'Поздравляем', 'desc' => 'Ваш комментарий успешно отправлен.'));
            else
                echo json_encode(array('title' => 'Поздравляем', 'desc' => 'Ваш комментарий успешно отправлен.'));
//                echo json_encode(array('title' => 'Ошибка', 'desc' => $result['response']));
//			echo '<pre>';
//			print_r($result);
//			exit;
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    private function sendClaris($action, $data) {
        if ($action == "OBRATNIY_ZVONOK")
            $url = 'http://erp.mobi03.ru/6878/Asterisk/callback.ashx';
        else
            $url = 'http://erp.mobi03.ru/6878/Asterisk/onlineRequest.ashx';

        $ch = curl_init($url);

        $post[$action] = json_encode($data); //SITE_ALL | OBRATNIY_ZVONOK | ORDER_PRICE
        $post['Token'] = '22c7eeb';

        curl_setopt_array($ch, array(
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_POST => 1,
            CURLOPT_POSTFIELDS => $post,
        ));

        $r = curl_exec($ch);

        curl_close($ch);
        return $r;
    }

    //Оставить заявку на обратный звонок
    public function actionRequest() {

        if (isset($_POST['RequestForm'])) {
            $choice = isset($_POST['choice']) ? $_POST['choice'] : 'off';
            //var_dump($msg);exit;
            $to = $choice == 'status' ? 'OBRATNIY_ZVONOK' : 'SITE_ALL';
            $msg2 = $choice == 'status' ? 'Я хочу узнать статус ремонта' : 'Я новый клиент';
            if ($choice == 'off') {
                $msg2 = 'Хочу обратный звонок - попап';
            }
            $call_type = isset($_POST['choice']) && $_POST['choice'] == 0 ? 'status' : 'new';
            $data = array(
                "fio" => isset($_POST['RequestForm']['userName']) ? $_POST['RequestForm']['userName'] : '', //фамилия имя
                "telefon" => preg_replace("/\D/", "", $_POST['RequestForm']['userPhone']), //телефон
                'msg' => $msg2, // oписание
                "gorod" => Yii::app()->session['userRegion']['city'] == "Москва и МО" ? "Москва" : Yii::app()->session['userRegion']['city'], //город
                "tip_tehniki" => isset($_GET['tip']) ? $_GET['tip'] : '',
                "brend" => isset($_GET['brand']) ? $_GET['brand'] : '', //бренд **
                "model" => isset($_GET['model']) ? $_GET['model'] : '', //модель **
                "call_type" => $call_type,
                "zakaz_kurera" => '', //заказ курьера
                "adres" => '', //адрес
                "data_sozdaniya" => time(), //дата создания
                "title_page" => urldecode($_GET['pageTitle']), //заголовок страницы с которой пришла заявка
                "link_page" => Yii::app()->request->hostInfo . '/' . urldecode($_GET['pageUrl']) //ссылка страницы с которой пришла заявка 
            );
            $result = $this->sendClaris($to, $data);
            //echo $result;exit; 
            Yii::app()->session['userAttributes'] = $_POST['RequestForm'];
            mTools::sendToClarisHistory($data, 'Обратный звонок');
//            if (stripos($result, 'success:true') !== FALSE) {
            $m = array('response' => 'success', 'message' => array('title' => 'Поздравляем', 'desc' => 'Ваша заявка на обратный звонок успешно принята'));
//            } else {
//                $m = array('response' => 'success', 'message' => array('title' => 'Уведомление', 'desc' => 'К сожалению, не удалось отправить Вашу заявку на сервер, попробуйте пожалуйста еще раз.'));
//            }
            echo json_encode($m);
        }
    }

    public function actionSkidka() {
        if (isset($_GET['skidka'])) {
            Yii::app()->session['skidka'] = $_GET['skidka'];
            echo Yii::app()->session['skidka'];
        }
    }

    //Оставить заявку
    public function actionOnlineOrder() {
        if (isset($_POST['OnlineOrderForm'])) {
            $data = array(
                "fio" => $_POST['OnlineOrderForm']['userName'], //фамилия имя
                "telefon" => preg_replace("/\D/", "", $_POST['OnlineOrderForm']['userPhone']), //телефон
                "zakaz_kurera" => (int) $_POST['OnlineOrderForm']['courier'] == 1 ? true : false, //заказ курьера
                "adres" => (!empty($_POST['OnlineOrderForm']['userAddress'])) ? $_POST['OnlineOrderForm']['userAddress'] : 'Нет', //адрес
                "gorod" => Yii::app()->session['userRegion']['city'] == "Москва и МО" ? "Москва" : Yii::app()->session['userRegion']['city'], //город
                "data_sozdaniya" => time(), //дата создания
                "tip_tehniki" => isset($_GET['tip']) ? $_GET['tip'] : '', //тип техники  **
                "brend" => isset($_GET['brend']) ? $_GET['brend'] : '', //бренд **
                "model" => isset($_GET['model']) ? $_GET['model'] : '', //модель **
                "rekomendation" => '', //Рекомендация **
                "price" => 0, //Цена
                "title_page" => $_GET['h1'], //заголовок страницы с которой пришла заявка **
                "link_page" => $_GET['pageUrl'], //ссылка страницы с которой пришла заявка **
                'msg' => isset(Yii::app()->session['skidka']) && !empty(Yii::app()->session['skidka']) ? 'Скидка: ' . Yii::app()->session['skidka'] . '%' : 'Скидка: 5%',
            );
            $result = $this->sendClaris('SITE_ALL', $data);
            // print_r($result);exit;
            mTools::sendToClarisHistory($data, 'Оставить заявку');

            Yii::app()->session['userAttributes'] = $_POST['OnlineOrderForm'];
            if (stripos($result, 'success:"true"') !== FALSE) {
                $m = array('response' => 'success', 'message' => array('title' => 'Ваша заявка принята', 'desc' => 'Спасибо, Ваша заявка успешно принята,<br />наши менеджеры свяжутся с Вами в ближайшее время.'));
            } else {
                $m = array('response' => 'success', 'message' => array('title' => 'Уведомление', 'desc' => 'К сожалению, не удалось отправить Вашу заявку на сервер, попробуйте пожалуйсте еще раз.'));
            }
            echo json_encode($m);
        }
    }

    public function actionOnline() {
        if (isset($_POST['OnlineOrderForm'])) {

            $adress = isset($_POST['OnlineOrderForm']['courier']) ? 1 : 0;
            $data = array(
                "fio" => $_POST['OnlineOrderForm']['userName'], //фамилия имя
                "telefon" => preg_replace("/\D/", "", $_POST['OnlineOrderForm']['userPhone']), //телефон
                'msg' => $_POST['OnlineOrderForm']['message'],
                "zakaz_kurera" => $adress == 1 ? True : False, //заказ курьера
                "adres" => $adress == 1 ? $_POST['OnlineOrderForm']['userAddress'] : 'нет', //адрес
                "data_sozdaniya" => time(), //дата создания
                "title_page" => $_GET['h1'], //заголовок страницы с которой пришла заявка
                "link_page" => $_GET['pageUrl'] //ссылка страницы с которой пришла заявка 
            );
            $result = $this->sendClaris('SITE_ALL', $data);
            mTools::sendToClarisHistory($data, 'Онлайн заявка');
            Yii::app()->session['userAttributes'] = $_POST['OnlineOrderForm'];
            if (stripos($result, 'success:"true"') !== FALSE) {
                $m = array('response' => 'success', 'message' => array('title' => 'Ваша заявка принята', 'desc' => 'Спасибо, Ваша заявка успешно принята,<br />наши менеджеры свяжутся с Вами в ближайшее время.'));
            } else {
                $m = array('response' => 'success', 'message' => array('title' => 'Уведомление', 'desc' => 'К сожалению, не удалось отправить Вашу заявку на сервер, попробуйте пожалуйсте еще раз.'));
            }
            echo json_encode($m);
        }
    }

    //Model online order $_GET['serviceId']
    public function actionOrder() {
        if (isset($_POST['buyServiceForm'])) {
            if ($_GET['sena'] == 'Бесплатно') {
                $price = 0;
            } else if ($_GET['sena'] == 'Звоните') {
                $price = -1;
            } else {
                $price = (int) $_GET['sena'];
            }
            $data = array(
                "fio" => $_POST['buyServiceForm']['userName'], //фамилия имя
                "telefon" => preg_replace("/\D/", "", $_POST['buyServiceForm']['userPhone']), //телефон
                "zakaz_kurera" => (int) $_POST['buyServiceForm']['courier'] == 1 ? true : false, //заказ курьера
                "adres" => (!empty($_POST['buyServiceForm']['userAddress'])) ? $_POST['buyServiceForm']['userAddress'] : 'Нет', //адрес
                "gorod" => $_POST['buyServiceForm']['city'] == "Москва и МО" ? "Москва" : $_POST['buyServiceForm']['city'], //город
                "data_sozdaniya" => time(), //дата создания
                "tip_tehniki" => $_GET['tip'], //тип техники
                "brend" => $_GET['brend'], //бренд
                "model" => $_GET['model'], //модель
                "rekomendation" => $_GET['serviceTitle'], //Рекомендация
                "price" => $price, //Цена
                "title_page" => $_GET['h1'], //заголовок страницы с которой пришла заявка
                "link_page" => $_GET['pageUrl'], //ссылка страницы с которой пришла заявка
                'email' => isset($_POST['buyServiceForm']['userEmail']) ? $_POST['buyServiceForm']['userEmail'] : 'Не указан'
            );
            $result = $this->sendClaris('ORDER_PRICE', $data);
            //echo $result; exit;
            mTools::sendToClarisHistory($data, 'Заказ ремонта');
            Yii::app()->session['userAttributes'] = $_POST['buyServiceForm'];
            if (isset($_POST['buyServiceForm']['userEmail'])) {
                mTools::sendMail($_POST['buyServiceForm']['userEmail'], 'Уважаемый(ая) ' . $_POST['buyServiceForm']['userName'], 'Уважаемый(ая) ' . $_POST['buyServiceForm']['userName'] . ', <br> 
                    Наши менеджеры свяжутся с Вами в течении 15 рабочих минут для согласования всех деталей заказа!<br><br>
                    С уважением, Mobi03.ru');
            }
            if (stripos($result, 'success:"true"') !== FALSE) {
                $m = array('response' => 'success', 'message' => array('title' => 'Ваша заявка принята', 'desc' => 'Спасибо, Ваша заявка успешно принята,<br />наши менеджеры свяжутся с Вами в ближайшее время.'));
            } else {
                $m = array('response' => 'success', 'message' => array('title' => 'Уведомление', 'desc' => 'К сожалению, не удалось отправить Вашу заявку на сервер, попробуйте пожалуйсте еще раз.'));
            }
            echo json_encode($m);
        }
    }

    public function actionRepairer() {
        if (isset($_POST['RepairerForm'])) {
            $data = array(
                "fio" => $_POST['RepairerForm']['userName'], //фамилия имя
                "telefon" => preg_replace("/\D/", "", $_POST['RepairerForm']['userPhone']), //телефон
                'msg' => "Мастер на выезд: " . $_POST['RepairerForm']['userMsg'],
                "zakaz_kurera" => false,
                "adres" => 'нет', //адрес
                "data_sozdaniya" => time(), //дата создания
                "title_page" => 'Вызвать мастера на дом',
                "link_page" => 'Вызвать мастера на дом',
                'email' => isset($_POST['RepairerForm']['userEmail']) ? $_POST['RepairerForm']['userEmail'] : 'Не указан'
            );
            $result = $this->sendClaris('SITE_ALL', $data);
            mTools::sendToClarisHistory($data, 'Онлайн заявка');
            if (isset($_POST['RepairerForm']['userEmail'])) {
                mTools::sendMail($_POST['RepairerForm']['userEmail'], 'Уважаемый(ая) ' . $_POST['RepairerForm']['userName'], 'Уважаемый(ая) ' . $_POST['RepairerForm']['userName'] . ', <br> 
                    Наши менеджеры свяжутся с Вами в течении 15 рабочих минут для согласования всех деталей заказа!<br><br>
                    С уважением, Mobi03.ru');
            }
            if (stripos($result, 'success:"true"') !== FALSE) {
                $m = array('response' => 'success', 'message' => array('title' => 'Ваша заявка принята', 'desc' => 'Спасибо, Ваша заявка успешно принята,<br />наши менеджеры свяжутся с Вами в ближайшее время.'));
            } else {
                $m = array('response' => 'success', 'message' => array('title' => 'Уведомление', 'desc' => 'К сожалению, не удалось отправить Вашу заявку на сервер, попробуйте пожалуйсте еще раз.'));
            }
            echo json_encode($m);
        }
    }

    //Написать генеральному директору
    public function actionMessage() {
        $msg = "Вам прислали письмо с сайта: <br/>" .
                "<br/>Пользователь: " . $_POST['WriteDirectorForm']['userName'] .
                "<br />Телефон: <a href=\"tel:" . preg_replace("/\D/", "", $_POST['WriteDirectorForm']['userPhone']) . "\">" . $_POST['WriteDirectorForm']['userPhone'] . "</a><br />" .
                "<br/>E-mail: " . $_POST['WriteDirectorForm']['email'] .
                "<br/>Номер заказа: " . $_POST['WriteDirectorForm']['number'] .
                "<br />Содержание письма: <br />" . CHtml::encode($_POST['WriteDirectorForm']['message']);
        mTools::sendMail('clients@mobi03.ru', 'Письмо Генеральному директору', $msg);
        $data = array('response' => 'success', 'message' => array('title' => 'Уведомление', 'desc' => 'Спасибо! Ваше письмо успешно отправлено.'));
        echo json_encode($data);
    }

    //Записаться в сервис центр
    public function actionContactJoin() {
        $data = array(
            "fio" => $_POST['ContactJoinForm']['userName'], //фамилия имя
            "telefon" => preg_replace("/\D/", "", $_POST['ContactJoinForm']['userPhone']), //телефон
            'msg' => 'Записаться в сервис центр',
            "zakaz_kurera" => false, //заказ курьера
            "adres" => 'нет', //адрес
            "data_sozdaniya" => time(), //дата создания
            "title_page" => 'Записаться в сервис центр', //заголовок страницы с которой пришла заявка
            "link_page" => $_GET['url'] //ссылка страницы с которой пришла заявка 
        );

        $result = $this->sendClaris('SITE_ALL', $data);

        $m = array('response' => 'success', 'message' => array('title' => 'Ваша заявка принята', 'desc' => 'Спасибо, Ваша заявка успешно принята,<br />наши менеджеры свяжутся с Вами в ближайшее время.'));

        echo json_encode($m);
    }

    public function actionLoadAudio() {
        if (Yii::app()->request->isAjaxRequest && isset($_POST['key'])) {
            if (!isset($_POST['limit']))
                $limit = 10;
            else
                $limit = (int) $_POST['limit'];

            $li = '';
            $key = (int) $_POST['key'] * $limit;
            $sql = "SELECT * FROM {{audio_reviews}} LIMIT {$limit} OFFSET $key";
            $audioReviews = Yii::app()->db->getCommandBuilder()->createSqlCommand($sql)->queryAll();
            foreach ($audioReviews as $audioReview) {
                $li .= '<li class="audio-reviews__item">
							<ul>
								<li>
									<div class="audio-reviews__button">
										<a href="#" class="__play" data-go-to="' . ($key) . '">
											<span>Пауза/Воспроизведение</span>
										</a>
									</div>
								</li>
								<li>
									<p>#' . ++$key . ' ' . $audioReview['audioName'] . ': <strong>' . $audioReview['audioTitle'] . '</strong></p>
								</li>
							</ul>
						</li>';
            }
            echo $li;
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    public function actionSameProblem() {
        if (Yii::app()->request->isAjaxRequest) {
            $faqID = (int) $_POST['faqId'];
            $model = Faq::model()->findByPk($faqID);
            if (!Yii::app()->user->isGuest) {
                $users = explode(',', $model['faqUsers']);
                if (!in_array(Yii::app()->user->name['userEmail'], $users)) {
                    $users = $users + array(Yii::app()->user->name['userEmail']);
                    $model->faqUsers = implode(',', $users);
                    $model->faqCounter++;
                    $model->save(false);
                }
                echo 'Это проблема еще у ' . $model->faqCounter . ' человека';
            } else
            if (!isset(Yii::app()->session['same'])) {
                $model->faqCounter++;
                $model->save(false);
                echo 'Это проблема еще у ' . $model->faqCounter . ' человека';
            }
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    protected function userRequestsTime() {
        if (!isset(Yii::app()->session['userRequestsTime']))
            Yii::app()->session['userRequestsTime'] = time();
        else {
            if ((time() - Yii::app()->session['userRequestsTime']) <= 2) {
                return false;
            } else
                Yii::app()->session['userRequestsTime'] = time();
        }
        return true;
    }

    public function actionLoadForm() {
        if (Yii::app()->request->isAjaxRequest && isset($_GET['formName']) && isset($_GET['modelName'])) {
            $model = new $_GET['modelName'];

            $model->attributes = Yii::app()->session['userAttributes'];

            if (isset($_GET['scenario']))
                $model->scenario = $_GET['scenario'];
            $params = array('model' => $model);
            foreach ($_GET as $key => $get) {
                if ($key != 'formName' && $key != 'modelName') {
                    $params[$key] = urldecode($get);
                }
            }
            echo $this->renderPartial($_GET['formName'], $params);
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    public function actionSendPassword() {
        $model = new ForgotPasswordForm();
        if (isset($_POST['ajax']) && $_POST['ajax'] === 'password-form') {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }

        if (isset($_POST['ForgotPasswordForm'])) {
            $model->attributes = $_POST['ForgotPasswordForm'];
            if ($model->validate()) {
                $hash = md5(time() . $model->userEmail);
                Yii::app()->db->createCommand("UPDATE {{users}} SET \"userHash\" = '" . $hash . "', \"userHashDate\" = '" . time() . "' WHERE \"userEmail\" = '" . $model->userEmail . "'")->execute();
                $msg = '<a href="' . Yii::app()->request->hostInfo . '/password/restore?hash=' . $hash . '&email=' . $model->userEmail . '">' . $hash . '</a>';
                Yii::import('application.extensions.phpmailer.JPhpMailer');
                $mail = new JPhpMailer();
                $mail->SetFrom('no-reply@mobi03.ru', 'mobi03.ru');
                $mail->Subject = 'mobi03.ru - Указания по восстановлению пароля';
                $mail->AltBody = '';
                $mail->CharSet = 'UTF-8';
                $mail->MsgHTML($msg);
                $mail->AddAddress($model->userEmail, 'mobi03.ru');
                $mail->Send();
                Yii::app()->user->setFlash('success', ['Уведомление', 'Указания по восстановлению Вашего пароля отправлены на введенную Вами почту']);
                $this->redirect(Yii::app()->homeUrl);
            }
        }
    }

    public function actionContact() {
        $model = new ContactJoinForm();
        echo $this->renderPartial('contactJoin', array('model' => $model));
    }

    public function checkIP($ip, $itemId) {

        if (Yii::app()->user->isGuest) {
            if (Yii::app()->session['review']['modelID'] != $itemId) {
                Yii::app()->session['review'] = array('modelID' => $itemId, 'ip' => $ip);
                return true;
            } else
                return false;
        }else {
            $sql = "SELECT \"reviewUserIp\" FROM {{reviews}} WHERE \"reviewUseremail\" = '" . Yii::app()->user->name['userEmail'] . "' AND \"itemId\" = '$itemId'";
            $ips = Yii::app()->db->getCommandBuilder()->createSqlCommand($sql)->queryAll();
            return empty($ips) ? true : false;
        }
    }

    public function actionRating() {
        if (Yii::app()->request->isAjaxRequest) {
            $ip = mTools::getUserIp();
            if (!isset($_POST['modelId'])) {
                $data = array('reviewId' => 1, 'ratingId' => 1, 'ratingSum' => $_POST['rate']);
                $result = Yii::app()->db->getCommandBuilder()->createInsertCommand('{{_rev2rate}}', $data)->execute();
                if ($result) {
                    Yii::app()->session['site_rating'] = ['rate_val' => $_POST['rate']];
                    echo 'Ваш отзыв отправлен';
                } else {
                    echo 'На данное время нет возможности отправить оценку, попробуйте пожалуйста позже';
                }

                exit;
            }
            if ($this->checkIP($ip, $_POST['modelId'])) {
                $data = array(
                    '"itemType"' => 'model',
                    '"itemId"' => $_POST['modelId'],
                    '"reviewUsername"' => Yii::app()->user->isGuest ? '' : Yii::app()->user->name['userName'],
                    '"reviewUseremail"' => Yii::app()->user->isGuest ? '' : Yii::app()->user->name['userEmail'],
                    '"reviewUserphone"' => Yii::app()->user->isGuest ? '' : Yii::app()->user->name['userPhone'],
                    '"reviewDate"' => time(),
                    '"reviewActive"' => 0,
                    '"reviewUserIp"' => $ip
                );
                $sql = "INSERT INTO {{reviews}} (\"itemType\", \"itemId\", \"reviewDate\", \"reviewActive\", \"reviewUserIp\", \"reviewUseremail\") VALUES('model', '" . (int) $_POST['modelId'] . "', '" . time() . "', '0', '$ip', '" . (Yii::app()->user->isGuest ? '' : Yii::app()->user->name['userEmail']) . "')";
                Yii::app()->db->getCommandBuilder()->createSqlCommand($sql)->execute();
                $riviewID = Yii::app()->db->getCommandBuilder()->getLastInsertID('{{reviews}}');
                unset($data);
                $data = array('reviewId' => $riviewID, 'ratingId' => (int) $_POST['ratingId'], 'ratingSum' => $_POST['rate']);
                Yii::app()->db->getCommandBuilder()->createInsertCommand('{{_rev2rate}}', $data)->execute();
                $return = array('allCount' => $this->getValue($_POST['modelId']), 'count' => $this->setValue($_POST['modelId']));
                echo json_encode($return);
            } else
                echo 'error';
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    public function actionLogin() {
        $model = new LoginForm;
        // if it is ajax validation request
        if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }
        // collect user input data
        if (isset($_POST['LoginForm'])) {
            $url = isset($_GET['return']) && !empty($_GET['return']) ? $_GET['return'] : Yii::app()->user->returnUrl;
            $model->attributes = $_POST['LoginForm'];
            // validate user input and redirect to the previous page if valid

            if ($model->validate() && $model->login())
                $this->redirect($url);
        }
        // display the login form
        $this->renderPartial('login', array('model' => $model));
    }

    /**
     * Logs out the current user and redirect to homepage.
     */
    public function actionLogout() {
        Yii::app()->user->logout();
        $this->redirect(Yii::app()->homeUrl);
    }

    public function actionAlert() {
        if (isset($_GET['title']) && isset($_GET['desc'])) {
            echo $this->renderPartial('alert', array('title' => $_GET['title'], 'desc' => $_GET['desc']));
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    public function actionRegistration() {
        $model = new Registration();
        $model->scenario = 'create';
        if (isset($_POST['ajax']) && $_POST['ajax'] === 'registration-form') {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }
        if (isset($_POST['Registration'])) {
            $model->attributes = $_POST['Registration'];
            if ($model->save()) {
                echo 'asdasd';
            }
        }
    }

    public function actionGetContacts() {
        if (!Yii::app()->request->isAjaxRequest || !isset($_POST['regionId'])) {
            echo json_encode(['response' => 'error']);
            exit();
        }
        $contacts = Yii::app()->db->createCommand(" SELECT \"pageUrl\", \"pageLinkedServices\" FROM {{pages}} WHERE  \"pageType\"='contact' AND \"pageActive\" = 1 AND \"pageItemId\" =" . (int) $_POST['regionId'])->queryAll(TRUE);
        $result = [];
        $metroStyles = [ 'bagrationovskaya', 'maryino',
            'voykovskaya', 'china-city',
            'prague', 'altufyevo',
            'novogireevo', 'teply-stan',
            'mitino',
        ];
        foreach ($contacts as $contact) {
            $res = unserialize(CHtml::decode($contact['pageLinkedServices']));
            $metroCss = unserialize(CHtml::decode($contact['pageLinkedServices']));
            $metroCss = !empty($metroCss['metroCss']) ? $metroCss['metroCss'] : $metroStyles[rand(0, sizeof($metroStyles) - 1)];
            $result[] = [
                'pageUrl' => $contact['pageUrl'],
                'pageTitle' => $_POST['mainPage'] ? $res['mainTitle'] : $res['blockTitle'],
                'metroCss' => $metroCss,
            ];
        }
        echo json_encode([ 'response' => 'success', 'data' => $result]);
        exit();
    }

    public function actionGetRegions() {
        if (!Yii::app()->request->isAjaxRequest)
            exit();
        echo $this->renderPartial('getregions');
        exit();
    }

    public function actionSetRegion() {

        if (!Yii::app()->request->isAjaxRequest || !isset($_POST['regionId']))
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');

        $defaultRegion = mTools::getDefaultRegion();
        $firstTime = false;
        if (isset(Yii::app()->session['userRegion']['isNewVisitor'])) {
            $firstTime = true;
        }
        Yii::app()->session['userRegion'] = [
            'country' => 'Не определена',
            'region' => 'Не определен',
            'city' => $defaultRegion['regionTitle'],
            'id' => $defaultRegion['regionId'],
        ];

        foreach (Yii::app()->params['regions'] as $region) {
            if ($region['regionId'] == $_POST['regionId']) {
                Yii::app()->session['userRegion'] = [
                    'country' => 'Не определена',
                    'region' => 'Не определена',
                    'city' => $region['regionTitle'],
                    'id' => $region['regionId'],
                ];
                if ($firstTime)
                    echo json_encode(['firstTime' => 'yes']);
                else
                    echo json_encode(['firstTime' => 'no']);
                exit();
            }
        }
        exit();
    }

}
